//
//  CZPlaceholderTextView.swift
//  微博08
//
//  Created by apple on 16/3/6.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit

/// 带占位文本的textView
class CZPlaceholderTextView: UITextView {
    // MARK: - 属性
    /// 占位文本
    var placeholder: String? {
        didSet {
            placeholderLabel.text = placeholder
            placeholderLabel.sizeToFit()
            
            placeholderLabel.font = self.font!
        }
    }
    
    override init(frame: CGRect, textContainer: NSTextContainer?) {
        super.init(frame: frame, textContainer: textContainer)
        
        // 不要通过代理来监听文字的改变,有可能在外面被别人用代理覆盖了
//        self.delegate = self
        
        // 使用通知.一对多.不会被覆盖
        
        // object: 通知的发送者 
        // object: nil只要发送这个通知就能监听到,不管是谁发送的
        // object: 填对象,只有这个对象发出的指定通知才能监听到
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "textViewDidChaged", name: UITextViewTextDidChangeNotification, object: self)
    }
    
    // 对象销毁的时候调用
    deinit {
        // 移除监听,野指针
        NSNotificationCenter.defaultCenter().removeObserver(self)
    }
    
    func textViewDidChaged() {
//        print("textView\(text)")
//        print("textView.hasText\(hasText())")

        // 有文字的时候隐藏
        placeholderLabel.hidden = hasText()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    // MARK: - 懒加载
    /// 占位文本label
    private lazy var placeholderLabel: UILabel = {
        // 添加占位文本
        let label = UILabel()
        self.addSubview(label)
        label.font = self.font!
        label.textColor = UIColor.lightGrayColor()
        label.sizeToFit()
        
        // 使用系统的约束
        label.translatesAutoresizingMaskIntoConstraints = false
        self.addConstraint(NSLayoutConstraint(item: label, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: 5))
        self.addConstraint(NSLayoutConstraint(item: label, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Top, multiplier: 1, constant: 8))
        
        return label
    }()
}


//extension CZPlaceholderTextView: UITextViewDelegate {
//    func textViewDidChange(textView: UITextView) {
////        print("textView\(textView.text)")
////        print("textView.hasText\(textView.hasText())")
//        
//        // 有文字的时候隐藏
//        placeholderLabel.hidden = textView.hasText()
//    }
//}
